package com.zaimokuza.cn.mapper;

import com.github.pagehelper.Page;
import com.zaimokuza.cn.entity.blog.Blog;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.ArrayList;

/**
 * @author zaimokuza
 */
@Mapper
public interface BlogMapper {

    /**
     * 添加博客
     *
     * @param blog 博客
     */
    void insertBlog(Blog blog);

    /**
     * 更新博客
     *
     * @param blog 博客
     */
    void updateBlog(Blog blog);

    /**
     * 根据博客ID对博客进行逻辑删除
     *
     * @param id 博客ID
     */
    void updateBlogStatus(String id);

    /**
     * 查询分页的博客集合
     *
     * @param param 查询条件
     * @return 分页博客集合
     */
    Page<Blog> queryBlogPage(Blog param);

    /**
     * 根据时间查询推荐博客
     *
     * @param time 时间
     * @return 博客集合
     */
    ArrayList<Blog> queryRecommendBlogList(String time);

    /**
     * 根据时间及搜索内容查询博客
     *
     * @param str  搜索内容
     * @param time 时间
     * @return 博客集合
     */
    ArrayList<Blog> querySearchBlogList(@Param("str") String str, @Param("time") String time);

    /**
     * 根据博客ID查询博客详情
     *
     * @param id     博客ID
     * @param userId 用户ID，用于关联点赞信息
     * @return 博客
     */
    Blog queryBlog(String id, String userId);

    /**
     * 根据博客ID查询作者ID
     *
     * @param id 博客ID
     * @return 博客作者ID
     */
    String queryBlogAuthorIdById(String id);

    /**
     * 查询是否为博客作者
     *
     * @param blogId   博客ID
     * @param authorId 作者ID
     * @return 1:是博客作者;null:不是博客作者
     */
    Integer queryIsBlogAuthor(@Param("blogId") String blogId, @Param("authorId") String authorId);

    /**
     * 查询是否存在博客
     *
     * @param blogId 博客ID
     * @return 1:存在;null:不存在
     */
    Integer queryBlogIsExist(@Param("blogId") String blogId);

}
